package com.stronger.leetcode.simple;

import java.util.Arrays;
import java.util.stream.Collectors;

/**
 * @author Created by njy on 2023/6/27
 * 58.最后一个单词的长度
 */
public class LastWordLength58 {


    /**
     * 给你一个字符串 s，由若干单词组成，单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。
     * 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。
     * 示例 1：
     * 输入：s = "Hello World"
     * 输出：5
     * 解释：最后一个单词是“World”，长度为5。
     * 示例 2：
     * 输入：s = "   fly me   to   the moon  "
     * 输出：4
     * 解释：最后一个单词是“moon”，长度为4。
     * 示例 3：
     * 输入：s = "luffy is still joyboy"
     * 输出：6
     * 解释：最后一个单词是长度为6的“joyboy”。
     * 提示：
     * 1 <= s.length <= 104
     * s 仅有英文字母和空格 ' ' 组成
     * s 中至少存在一个单词
     * 通过次数439,893提交次数1,028,543
     */
    public static int lengthOfLastWord(String s) {
       String[] list = Arrays.stream(s.split(" "))
                .filter(a -> !a.equals(""))
                .collect(Collectors.toList()).toArray(new String[0]);

        return list[list.length-1].length();
    }

    public static void main(String[] args) {
        String s="Hello World";
        int i = lengthOfLastWor(s);
        System.out.println("i = " + i);
    }

    //正解
    public static int lengthOfLastWor(String s) {
        //定位到最后一个元素
        int end = s.length() - 1;
        //为空就一直往前移 end--，直到不为""；
        while(end >= 0 && s.charAt(end) == ' ') end--;
        if(end < 0) return 0;
        int start = end;
        //不为""就一直往前移 start--，直到为"";
        while(start >= 0 && s.charAt(start) != ' ') start--;
        return end - start;
    }

}
